package io;
import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲字符流: java.io.BufferedWriter和java.io.BufferedReader
 * 缓冲字符流内部默认有一个8192长的char数组，可以保证读写文本数据的效率
 *
 * java.io.PrintWriter是具有自动行刷新的缓冲字符输出流----------常用
 * 实际上它的缓冲操作还是依靠BufferedWriter实现的，它的内部总是连接着BufferedWriter
 * 只不过它增加了两个新功能: 按行写字符串、自动行刷新
 */
public class PwDemo {
    public static void main(String[] args) throws FileNotFoundException {
        /*
        PrintWriter pw = new PrintWriter("pw.txt");
        pw.println("写信告诉我今天海是什么颜色 夜夜陪着你的海心情又如何");
        pw.println("灰色是不想说 蓝色是犹豫");
        System.out.println("写出完毕");
        pw.close();
         */
        //文件流:低级流/字节流，作用:连接程序和文件管道，负责将字节写入到文件中
        FileOutputStream fos = new FileOutputStream("pw2.txt");
        //转换流:高级流/字符流，作用:连接字节与字符流，负责将写出的字符转换为字节
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
        //缓冲流:高级流/字符流，作用:内部默认维护8192长的char数组，总是以块写操作保证写出字符的效率
        BufferedWriter bw = new BufferedWriter(osw);
        //PrintWriter:高级流/字符流，作用:按行写出字符串(println)、自动行刷新(一会用)
        PrintWriter pw = new PrintWriter(bw);
        pw.println("写信告诉我今天海是什么颜色 夜夜陪着你的海心情又如何");
        pw.println("灰色是不想说 蓝色是犹豫");
        System.out.println("写出完毕");
        pw.close();

    }
}














